草庐IT

c++ - DrawText VS TextOut Win32

全部标签

windows - 将 x32 lib 与 x64 进程集成的最佳方法是什么(无需将 lib 转换为 x64)?

我继承了一个在x32中编译的库,但我无法将其编译为x64。我认为可能是用x32进程封装lib,然后通过调用CreateProcess函数winapi在x64进程中运行它。然后我将使用共享内存将API库x32接口(interface)之间的数据传输到x64进程。我是不是漏掉了什么(看起来很复杂)? 最佳答案 他们的回答是你不能直接这样做。进程是32位或64位的。64位进程无法加载32位代码。是的,您必须在32位进程中运行32位代码,并在它与64位进程之间使用某种类型的接口(interface)。根据您的代码,这可能需要大量工作。执行此

c - 为 Windows 库添加 unicode 支持

我想为我正在维护的C库添加Unicode支持。目前它希望所有字符串都以utf8编码传递。根据反馈,Windows通常提供3个功能版本。fooA()ANSI编码字符串fooW()Unicode编码字符串foo()字符串编码取决于UNICODE定义有没有一种无需自己编写大量包装函数即可添加此支持的简单方法?一些函数可以从库中调用,也可以由用户调用,这使情况变得有点复杂。我想保留对utf8字符串的支持,因为该库可在多个操作系统上使用。 最佳答案 没有后缀的foo函数实际上是宏。fooA函数已过时,是fooW函数的简单包装器,它们是唯一实际

windows - MS-dos FAT32格式和windows FAT32格式有什么区别

MS-dosFAT32格式和windowsFAT32格式有什么区别? 最佳答案 嗯...仅供引用,在mac(运行macos)上,在终端应用程序中,您可以使用“diskutil”命令行实用程序扫描USBkey。当key是全新的时,您会得到以下结果:$diskutillistdisk2/dev/disk2(内部,物理):#:类型名称大小标识符0:FDisk_partition_scheme*16.1GBdisk21:Windows_FAT_32EVERIO_SD16.1GBdisk2s1如果您使用“DiskUtility.app”格式化

c - 在没有 C 运行时的情况下与 VS2010 链接时未解析的符号

我正在处理一个有大小限制的项目,所以我不想链接到VisualStudio的C运行时。我使用静态运行时(/MT)和/NODEFAULTLIB:LIBCMT标志来执行此操作。我已经通过检查VS附带的运行时源解决了大部分问题。但是,编译器仍然会生成一些未解析的外部符号:_chkstk:生成用于检查大于4k的函数的堆栈。我可以关闭它或提供虚拟功能吗?__libm_sse2_pow和其他SSE调用:我可以通过关闭SSE代码生成来避免这些,但如果可能的话,我希望拥有它们。这些符号似乎来自Intel库(libmmd.lib?)。为什么这部分仍然是C运行时?_ftol2_sse:将浮点型转换为长整型。

CreateFileMapping 以 "Not enough disk space"错误结束

我在理解如何使用API函数CreateFileMapping(...)时遇到问题。我一直在尝试映射一个小文件,然后反转它的内容。它只有大约1Kb,但我一直收到“内存不足”错误。我已通过调用CreateFile打开了文件,并使用GetFileSize获取了它的大小。然后我调用:CreateFileMapping(fileHandle,NULL,PAGE_READWRITE|SEC_RESERVE,fileSize+1,fileSize+1,NULL);我怀疑问题是将fileSize+1作为dwFileOffsetHigh和dwFileOffsetLow传递,但我很难理解应该做什么我改为传

c# - uint 和 System.UInt32 有什么区别?

有区别吗,还是它们只是别名? 最佳答案 是的,它们是别名。Here's完整列表。 关于c#-uint和System.UInt32有什么区别?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2071161/

c# - 在 64 位计算机上以 32 位运行 C# 应用程序

如何强制我的应用程序在64位计算机上以32位运行?代码是用C#写的。 最佳答案 右键单击您的项目,然后选择属性。在属性中,选择构建选项卡。在平台目标下,选择x86。按Ctrl+Shift+S保存所有文件,右键单击解决方案并选择“清理”以清除旧的二进制文件.之后的任何构建都应该是32位 关于c#-在64位计算机上以32位运行C#应用程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

c# - 使用 32feet.net 使用独特的服务协议(protocol)连接到 BTLE 设备

我有一个低功耗蓝牙(BTLE)设备,我需要将其连接到我的电脑。为此,我在桌面WPF应用程序中使用了WindowsAPI引用。蓝牙设备相当简单:1个服务,2个特征(一个读取/通知,一个写入)。Tomakebelowcodework,addthefollowingreferencestotheWPF(forwindows10):C:\ProgramFiles(x86)\ReferenceAssemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dllC:\ProgramFiles(x86)\Wind

c# - 如何绕过 Marshal.Copy(32 位)长度限制?

我正在尝试在托管(C#)和非托管(C++Win32)代码之间来回移动数据。我可以使用Marshal.Copy它工作正常,直到数据集变大>2GB因为Marshal.Copy有一个带符号的32位int(2GB)长度限制。知道如何解决这个问题吗?目前,我在托管端使用AllocHGlobal(IntPtr),在非托管端使用.ToPointer()。如果我不能使用Marshal.Copy来回移动大数据(>2GB)我可以使用什么? 最佳答案 我的第一react是:为什么要复制2GB以上的数据?也许您的应用程序约束不允许这样做,但在我看来,如果您

c# - 关于 AverageTimer32 PerformanceCounter 的困惑

我正在尝试设置一个PerformanceCounter来测量某个方法的平均执行时间。我尝试阅读AverageTimer32并查看了很多示例,但我似乎无法正确理解。我设置了类别CounterCreationDataCollectionCCDC=newCounterCreationDataCollection();//Addthecounter.CounterCreationDataaverageTimer32=newCounterCreationData();averageTimer32.CounterType=PerformanceCounterType.AverageTimer32;